perm filename CODE4.BKP[XX,LCS] blob
sn#208655 filedate 1976-03-26 generic text, type T, neo UTF8
00100 TITLE ITMSUB
00900 ; 00300 SUBROUTINE ITMSUB
01200 ; 00400 IMPLICIT INTEGER(A-Q,S-Z)
01400 ; 00500 REAL DIS,DISX,HGT,POS,CENTR,STFF,HGT1
01600 ; 00600 COMMON/STF/RSTFAC(-3/4),RSTJ2/MIN/MINI,RMINI
01800 ; 00700 COMMON R2,JA,CENTR,J2,RJQ(20),JQ(16),RE,RF,RG,RH/BM/RA,RC,RJY
02000 ; 00800 COMMON/POSI/STFF(-3/4),JJ2,POS/PLTR/PLT,RHT,DIS
02200 ; 00900 COMMON/ALF/QQ(3),RST7,RST18,R3Q,JY,RD,RX,RW,RJX,RJ,L,K,
02300 ; 01000 1 RJA,YY,DISX,HGT,RZ,INP(53)
02500 ; 01100 COMMON/DAT/RACNT(65),RDOT(17),XAC(7),RNOTE(22),RACCI(22),NACCI(3)
02700 ; 01200 EQUIVALENCE (J3,JQ(1)),(J4,JQ(2)),(J5,JQ(3)),(R5,RJQ(3)),(R11,
02800 ; 01300 1RJQ(9)),(R6,RJQ(4)),(J7,JQ(5)),(J8,JQ(6)),(J9,JQ(7)),(J10,JQ(8))
02900 ; 01400 1,(J11,JQ(9)),(J6,JQ(4)),(R9,RJQ(7)),(R8,RJQ(6)),(R3,RJQ(1))
03000 ; 01500 1 ,(R7,RJQ(5)),(R4,RJQ(2)),(R9,RJQ(7)),(R10,RJQ(8)),(RX3,RJQ(20))
03200 ; 01600 DATA R14/14.54/,RTF/3.0/,RHGT/48.0/,R2HGT/96.0/,RBM/.83/
03300 ; 01700 1,RDBR/ 3.5/,RBR/.33/,RBX/ 7.0/
03500 ITMSUB: 0 ;01800 C RDBR IS SPACER FOR DBL BAR.
03900 ; 02000 RST7=RSTJ2*7.
04000 MOVSI 3,203700
04100 FMPR 3,STF+=8
04200 MOVEM 3,ALF+3
04400 ; 02100 RST18=RSTJ2*18.
04500 MOVSI 02,205440
04600 FMPR 2,STF+=8
04700 MOVEM 02,ALF+4
04900 ; 02200 C TO COMPENSATE FOR NOTE #3 COMING AT POS=0
05300 ; 02400 R3Q=R3
00400 MOVE 02,.COMM.+4
00500 MOVEM 02,ALF+5 ; C NEXT DRAWS STRAIGHT LINES
01100 ; 02700 RD=R4*RST7
01300 FMPR 3,.COMM.+5
01400 MOVEM 3,ALF+7
01600 ; 02800 RA=0
01700 SETZM BM
01900 ; 02900 RX=RTF*RSTJ2+POS
02000 MOVE 02,[3.0]
02100 FMPR 02,STF+=8
02200 FADR 02,POSI+=9
02300 MOVEM 02,ALF+=8
02500 ; SOMEDAY ADD < RDIS=1./DIS > TO REPLACE ALL 1./DIS'S
02700 ; 03010 J10=J10*DIS*RSTJ2
02800 MOVE 4,.COMM.+=31
02900 TLC 4,232000
03000 FADR 4,4
03100 FMPR 4,PLTR+2
03200 FMPR 4,STF+=8
03300 JSA 16,IFIX
03400 JUMP 4
03500 MOVEM 0,J10
03700 ; THICKNESS DEPENDS ON FINAL SIZE FACTOR (DIS) AND STAFF SIZE.(???!!)
03900 ; 03100 IF(J5.EQ.50)GO TO 300
04000 MOVEI 02,62
04100 CAMN 02,.COMM.+=26
04200 JRST I300 ; 50 IS FOR CRESC., DECRESC. AND BOXES
04600 ; 03300 IF(R6.NE.0)GO TO 401
04700 SKIPN .COMM.+7
04800 SKIPE .COMM.+=28
04900 JRST I401 ; IF(J7.NE.0)GO TO 401
00400 ; 03500 C FOR BAR LINES
00600 ; 03600 4000 JA=44
00700 MOVEI 02,54
00800 MOVEM 02,.COMM.+1 ;CODE # IS CHNGD SO BAR LINES WON'T AFFECT MAX. HGT.
01200 ; ↑↑↑↑↑↑↑↑↑ FOR VERTICAL WIGGLE (P6=0, P7=-1)
01400 ; 03900 DBR=0
01500 SETZM DBR#
01700 ; 04000 IF(J4.LT.1000)GO TO 400
01800 MOVEI 02,1750
01900 CAMLE 02,.COMM.+=25
02000 JRST I400
02100 ; J4=1001 = DBL BAR, =1401 = DBL BAR WITH RT. ONE HEAVY: J5=1=DOTS ADDED
03000 ; 04500 DBR=J4/1000
03100 MOVE 02,.COMM.+=25
03200 IDIVI 02,1750
03300 MOVEM 02,DBR
03400
03500 MOVEM 3,.COMM.+=25 ; 04600 J4=J4-DBR*1000
03600 ; 04700 C DBR=1 HEAVY BAR IS ON R
04300 ; 04800 9400 RD=RDBR+RDBR*RSTJ2
04400 I9400: MOVE 1,[3.5]
04500 FMPR 1,STF+=8
04600 FADR 1,[3.5]
04700 MOVEM 1,ALF+7 ; TO SPACE THIN BAR FROM HEAVY
05100 ; 05000 IF(J5.EQ.0)GO TO 400
05200 MOVE 02,.COMM.+=26
05300 JUMPE 2,I400
00500 ; 05100 C NEXT ADDS REPEAT DOTS TO DBL BAR.
00700 ; 05200 L=J4
00800 MOVE 3,.COMM.+=25
00900 MOVEM 3,ALF+=12
01100 ; 05300 RJ=L/100
01300 IDIVI 3,144
01400 TLC 3,232000
01500 FADR 3,3 ; IF(RJ.EQ.0)RJ=6.*RSTJ2
02000 JUMPN 3,.+3
02100 MOVSI 3,203600
02200 FMPR 3,STF+=8
02300 MOVEM 3,ALF+=11 ; HEAVY BAR WILL BE 5 LINES WIDE.
02800 ; 05600 RZ=R3
02900 MOVE 1,.COMM.+4
03000 MOVEM 1,ALF+=18
03200 ; 05700 J4=0
03300 SETZM J4 ; MUST BE 0 FOR DOTS IN 'NOTWRT'
03700 ; 05900 IF(DBR.EQ.0)DBR=J5
03900 JUMPN 02,.+3 ; J5 IS IN 2 YET!
04000 MOVE 02,.COMM.+=26
04100 MOVEM 02,DBR
04400 ; 06000 J5=0
04500 SETZM .COMM.+=26 ; J5=1 RPT ↑, =2 RPT ↑, =3 RPT ↑
04900 ; 06200 RJA=RD*2.
05000 MOVE 1,ALF+7
05100 FSC 1,1
05200 MOVEM 1,ALF+=14
00400 ; 06300 C TO SPACE DOTS, NOT ACCURATE FOR VERY SMALL OR VERY LARGE SIZE FACTORS
00500
00600 ; 06400 JY=DBR
00700 MOVE 02,DBR
00800 MOVEM 02,JY
00900
01000 ; 06500 IF(DBR.LT.2)GO TO 8400
01100 MOVEI 02,2
01200 CAMLE 02,DBR
01300 JRST 8I400
01400
01500 ; 06600 R3=RJA+RJ+RZ
01600 MOVE 02,ALF+=11
01700 FADR 02,ALF+=18
01800 FADR 02,ALF+=14
01900 MOVEM 02,.COMM.+4
02000
02100 ; 06700 7400 DO 3400 K=J2,MOD(L,100)+J2-1
02200 7I400 MOVNI 02,1
02300 ADD 02,J2
02400 JSA 16,MOD
02500 ARG 00,ALF+=12
02600 ARG 00,CONST.
02700 ADD 02,0
02800 MOVEM 02,TEMP.
02900 MOVE 15,J2
03000 4M MOVEM 15,K
03100 5M BLOCK 0
03200
03300 ; 06800 RSTJ2=RSTFAC(K)
03400 MOVE 02,RSTFAC+3(15)
03500 MOVEM 02,STF+=8
03600
03700 ; 06900 POS=STFF(K)
03800 MOVE 02,STFF +3(15)
03900 MOVEM 02,POSI+=9
04000
04100 ; 07000 R4=6
04200 MOVSI 02,203600
04300 MOVEM 02,.COMM.+5
04400
04500 ; 07100 CALL CENTX
04600 JSA 16,CENTX
04700
04800 ; 07200 C SPACES DOTS OUT FROM BAR
04900
05000 ; 07300 CALL RDRAW(1,17.0,ALF+7OT,STF+=8,.COMM.+4,CENTR+RSTJ2,STF+=8)
05100 MOVE 02,STF+=8
05200 FADR 02,CENTR
05300 MOVEM 02,%TEMP.
00400 JSA 16,RDRAW
00500 ARG 00,CONST.+1
00600 ARG 02,CONST.+2
00700 ARG 02,ALF+7OT
00800 ARG 02,STF+=8
00900 ARG 02,.COMM.+4
01000 ARG 02,%TEMP.
01100 ARG 02,STF+=8
01200
01300 ; 07400 C GO GET THE DOT
01400
01500 ; 07500 R4=8
01600 MOVSI 02,204400
01700 MOVEM 02,.COMM.+5
01800
01900 ; 07600 CALL CENTX
02000 JSA 16,CENTX
02100
02200 ; 07700 3400 CALL RDRAW(1,17.0,ALF+7OT,STF+=8,.COMM.+4,CENTR+RSTJ2,STF+=8)
02300 3I400 MOVE 02,STF+=8
02400 FADR 02,CENTR
02500 MOVEM 02,%TEMP.
02600 JSA 16,RDRAW
04600 8I400 MOVE 02,ALF+=18
04700 FSBR 02,ALF+=14
04800 MOVE 03,STF+=8
04900 FSC 03,2
05000 FSBR 02,3
05100 MOVEM 02,.COMM.+4
05200
05300 ; 08100 GO TO 7400
00400 JRST 7I400
00500
00600 ; 08200 C DO I NEED ANY MORE RESETS????
00700
00800 ; 08300 4400 J4=L
00900 4I400 MOVE 02,ALF+=12
01000 MOVEM 02,.COMM.+=25
01100
01200 ; 08400 J7=RJ*DIS
01300 MOVE 02,DIS
01400 FMPR 02,ALF+=11
01500 JSA 16,IFIX
01600 ARG 00,2
01700 MOVEM 00,.COMM.+=28
01800
01900 ; 08500 GO TO 5400
02000 JRST 5I400
02100
02200 ; 08600 400 IF(J5.NE.0)GO TO 9400
02300 I400: MOVE 02,.COMM.+=26
02400 JUMPN 02,I9400
02500
02600 ; 08700 K=J4/100
02700 MOVE 02,.COMM.+=25
02800 IDIVI 02,144
02900 MOVEM 02,K
03000
03100 ; 08800 C K IS FOR SPACING OF THIN BAR IN HEAVY-THIN ORDER
03200
03300 ; 08900 J7=K*DIS
03400 JSA 16,FLOAT
03500 ARG 00,K
03600 FMPR 00,DIS
03700 MOVEM 00,%TEMP.
03800 JSA 16,IFIX
03900 ARG 00,%TEMP.
04000 MOVEM 00,.COMM.+=28
04100
04200 ; 09000 C J7=NUM OF STROKES -- BASED ON FINAL SIZE FACTOR (DIS)
04300
04400 ; 09100 5400 L=MOD(J4,100)
04500 5I400 JSA 16,MOD
04600 ARG 00,.COMM.+=25
04700 ARG 00,CONST.
04800 MOVEM 00,ALF+=12
04900
05000 ; 09200 IF(L.EQ.0)L=1
05100 MOVE 02,ALF+=12
05200 JUMPN 02,6M
05300 MOVEI 02,1
00400 MOVEM 02,ALF+=12
00500 6M BLOCK 0
00600
00700 ; 09300 L=L+J2-1
00800 MOVNI 02,1
00900 ADD 02,ALF+=12
01000 ADD 02,J2
01100 MOVEM 02,ALF+=12
01200
01300 ; 09400 C J4=401 MAKES 4X THICK BARLINE - ONE STAFF
01400
01500 ; 09500 RA=RTF
01600 MOVE 02,[3.0]
01700 MOVEM 02,BM
01800
01900 ; 09600 IF(L.LE.4)GO TO 2400
02000 MOVEI 02,4
02100 CAML 02,ALF+=12
02200 JRST 2I400
02300
02400 ; 09700 L=4
02500 MOVEI 02,4
02600 MOVEM 02,ALF+=12
02700
02800 ; 09800 RA=300.
02900 MOVSI 02,211454
03000 MOVEM 02,BM
03100
03200 ; 09900 C FOR EXTENDING BARS ABOVE STAFF 4
03300
03400 ; 10000 2400 RY=RSTFAC(L)
03500 2I400 MOVE 03,ALF+=12
03600 MOVE 02,RSTFAC+3(3)
03700 MOVEM 02,RY
03800
03900 ; 10100 RZ=R3Q
04000 MOVE 02,ALF+5
04100 MOVEM 02,ALF+=18
04200
04300 ; 10200 C SAVE IT FOR DBL RPT BAR.
04400
04500 ; 10300 RY=STFF(L)+(RA+56.)*RY
04600 MOVSI 02,206700
04700 FADR 02,BM
04800 FMPR 02,RY
04900 MOVE 03,ALF+=12
05000 FADR 02,STFF +3(3)
05100 MOVEM 02,RY
05200
05300 ; 10400 1400 RA=1
00400 MOVEM 02,ALF+=12
00500 6M BLOCK 0
00600
00700 ; 09300 L=L+J2-1
00800 MOVNI 02,1
00900 ADD 02,ALF+=12
01000 ADD 02,J2
01100 MOVEM 02,ALF+=12
01200
01300 ; 09400 C J4=401 MAKES 4X THICK BARLINE - ONE STAFF
01400
01500 ; 09500 RA=RTF
01600 MOVE 02,[3.0]
01700 MOVEM 02,BM
01800
01900 ; 09600 IF(L.LE.4)GO TO 2400
02000 MOVEI 02,4
02100 CAML 02,ALF+=12
02200 JRST 2I400
02300
02400 ; 09700 L=4
02500 MOVEI 02,4
02600 MOVEM 02,ALF+=12
02700
02800 ; 09800 RA=300.
02900 MOVSI 02,211454
03000 MOVEM 02,BM
03100
03200 ; 09900 C FOR EXTENDING BARS ABOVE STAFF 4
03300
03400 ; 10000 2400 RY=RSTFAC(L)
03500 2I400 MOVE 03,ALF+=12
03600 MOVE 02,RSTFAC+3(3)
03700 MOVEM 02,RY
03800
03900 ; 10100 RZ=R3Q
04000 MOVE 02,ALF+5
04100 MOVEM 02,ALF+=18
04200
04300 ; 10200 C SAVE IT FOR DBL RPT BAR.
04400
04500 ; 10300 RY=STFF(L)+(RA+56.)*RY
04600 MOVSI 02,206700
04700 FADR 02,BM
04800 FMPR 02,RY
04900 MOVE 03,ALF+=12
05000 FADR 02,STFF +3(3)
05100 MOVEM 02,RY
05200
05300 ; 10400 1400 RA=1
05700 1I400 MOVSI 02,201400
05800 MOVEM 02,BM
05900
06000 ; 10500 IF(PLT.GE.0)GO TO 140
06100 MOVE 02,PLT
06200 JUMPGE 02,140P
06300
06400 ; 10600 J7=J7+1
06500 AOS J7
06600
06700 ; 10700 RA=1./DIS
06800 MOVSI 02,201400
06900 FDVR 02,DIS
07000 MOVEM 02,BM
07100
07200 ; 10800 C BAR LINES PLOT AS DOUBLE THICKNESS
07300
07400 ; 10900 140 RJX=R3Q
07500 140P MOVE 02,ALF+5
07600 MOVEM 02,ALF+=11X
07700
07800 ; 11000 42 CALL LINES(R3Q,ALF+=8,3)
07900 42P JSA 16,ALF+=12INES
08000 ARG 02,ALF+5
08100 ARG 02,ALF+=8
08200 ARG 00,CONST.+3
08300
08400 ; 11100 RJ=-1.
08500 MOVN 02,CONST.+4
08600 MOVEM 02,ALF+=11
08700
08800 ; 11200 RW=RY
08900 MOVE 02,RY
09000 MOVEM 02,RW
09100
09200 ; 11300 406 CALL LINES(RJX,RY,2)
09300 406P JSA 16,ALF+=12INES
09400 ARG 02,ALF+=11X
09500 ARG 02,RY
09600 ARG 00,CONST.+5
09700
09800 ; 11400 IF(J10.EQ.0)GO TO 411
09900 MOVE 02,J10
10000 JUMPE 02,411P
10100
10200 ; 11500 C P10 WILL THICKEN VERTICAL (OR MOSTLY VERTICAL) LINES.
10300
10400 ; 11600 J7=J10
10500 MOVE 02,J10
10600 MOVEM 02,.COMM.+=28
00500 ; 11700 J10=0
00600 SETZM J10
00700
00800 ; 11800 RA=1./DIS
00900 MOVSI 02,201400
01000 FDVR 02,DIS
01100 MOVEM 02,BM
01200
01300 ; 11900 411 IF(J7.GT.0)GO TO 409
01400 411P MOVE 02,.COMM.+=28
01500 JUMPG 02,409P
01600
01700 ; 12000 IF(DBR.LE.0)RETURN
01800 MOVE 02,DBR
01900 JUMPG 02,7M
02000 JRST 8M
02100 7M BLOCK 0
02200
02300 ; 12100 RY=RW
02400 MOVE 02,RW
02500 MOVEM 02,RY
02600
02700 ; 12200 CK R3Q=R3Q-RDBR
02800
02900 ; 12300 RA=RZ-RD
03000 MOVN 02,ALF+7
03100 FADR 02,ALF+=18
03200 MOVEM 02,BM
03300
03400 ; 12400 IF(DBR.NE.1)RA=RJX+RD-1.
03500 MOVEI 02,1
03600 CAMN 02,DBR
03700 JRST 9M
03800 MOVN 02,CONST.+4
03900 FADR 02,ALF+7
04000 FADR 02,ALF+=11X
04100 MOVEM 02,BM
04200 9M BLOCK 0
04300
04400 ; 12500 DBR=DBR-2
04500 MOVNI 02,2
04600 ADDM 02,DBR
04700
04800 ; 12600 R3Q=RA
04900 MOVE 02,BM
05000 MOVEM 02,ALF+5
05100
05200 ; 12700 GO TO 1400
05300 JRST 1I400
00500 ; 12800 CC411 IF(J7.LE.0)RETURN
00600
00700 ; 12900 C FOR 'HEAVY' LINE.
00800
00900 ; 13000 409 RJX=RJX+RA
01000 409P MOVE 02,BM
01100 FADRM 02,ALF+=11X
01200
01300 ; 13100 CALL LINES(RJX,RY,2)
01400 JSA 16,ALF+=12INES
01500 ARG 02,ALF+=11X
01600 ARG 02,RY
01700 ARG 00,CONST.+5
01800
01900 ; 13200 J7=J7-1
02000 SOS J7
02100
02200 ; 13300 RY=RW
02300 MOVE 02,RW
02400 MOVEM 02,RY
02500
02600 ; 13400 IF(RJ)RY=RX
02700 MOVE 02,ALF+=11
02800 JUMPGE 02,10M
02900 MOVE 02,ALF+=8
03000 MOVEM 02,RY
03100 10M BLOCK 0
03200
03300 ; 13500 RJ=-RJ
03400 MOVNS 00,ALF+=11
03500
03600 ; 13600 GO TO 406
03700 JRST 406P
03800
03900 ; 13700 CC43 IF(RA.LE.0)RETURN
04000
04100 ; 13800 C HOW IS RA.NE.0?
04200
04300 ; 13900 C DRAWS BAR LINES. J4>0 CAUSES FULL LINE.
04400
04500 ; 14000 CC403 RA=RA-3.72
04600
04700 ; 14100 CC R3Q=R3Q+22
04800
04900 ; 14200 CC RJX=RJX+22
05000
05100 ; 14300 C DO ABOVE NEED *RSTJ2? ************
05200
05300 ; 14400 C **** BASED ON '596' ****
00900 ; 14700 C FOR CRESC., DECRESC.
01000
01100 ; 14800 300 IF(R7.EQ.0)R7=2.3
01200 I300: MOVE 02,R7
01300 JUMPN 02,11M
01400 MOVE 02,CONST.+6
01500 MOVEM 02,R7
01600 11M BLOCK 0
01700
01800 ; 14900 IF(R7.EQ.-1.)R7=-2.3
01900 MOVN 02,CONST.+4
02000 CAME 02,R7
02100 JRST 12M
02200 MOVN 02,CONST.+6
02300 MOVEM 02,R7
02400 12M BLOCK 0
02500
02600 ; 15000 RA=ABS(R7/2.0)*RST7
02700 MOVE 02,R7
02800 FSC 02,777777
02900 MOVEM 02,%TEMP.
03000 JSA 16,ABS
03100 ARG 02,%TEMP.
03200 FMPR 00,ALF+3
03300 MOVEM 00,BM
03400
03500 ; 15100 C AMOUNT OF SPREAD
03600
03700 ; 15200 RJ=R3Q
03800 MOVE 02,ALF+5
03900 MOVEM 02,ALF+=11
04000
04100 ; 15300 RX=RX-RST18+RD
04200 MOVN 02,ALF+4
04300 FADR 02,ALF+7
04400 FADRM 02,ALF+=8
04500
04600 ; 15400 IF(R8.NE.0)GO TO 302
04700 MOVE 02,R8
04800 JUMPN 02,302P
04900
05000 ; 15500 C JUMP TO MAKE BOX
05100
05200 ; 15600 R6=RHORZ(R6)
05300 JSA 16,RHORZ
00400 ARG 02,R6
00500 MOVEM 00,R6
00600
00700 ; 15700 IF(R7)GO TO 301
00800 MOVE 02,R7
00900 JUMPL 02,301P
01000
01100 ; 15800 RJ=R6
01200 MOVE 02,R6
01300 MOVEM 02,ALF+=11
01400
01500 ; 15900 R6=R3Q
01600 MOVE 02,ALF+5
01700 MOVEM 02,R6
01800
01900 ; 16000 301 CALL LINX(RJ,ALF+=8+RA,R6,ALF+=8)
02000 301P MOVE 02,BM
02100 FADR 02,ALF+=8
02200 MOVEM 02,%TEMP.
02300 JSA 16,ALF+=12INX
02400 ARG 02,ALF+=11
02500 ARG 02,%TEMP.
02600 ARG 02,R6
02700 ARG 02,ALF+=8
02800
02900 ; 16100 CALL LINES(RJ,ALF+=8-RA,2)
03000 MOVN 02,BM
03100 FADR 02,ALF+=8
03200 MOVEM 02,%TEMP.
03300 JSA 16,ALF+=12INES
03400 ARG 02,ALF+=11
03500 ARG 02,%TEMP.
03600 ARG 00,CONST.+5
03700
03800 ; 16200 C FOR CRESC, DECRESC:4 POS1, STF, HGT, 50, POS1, +OR-N(0=2.3,-1=-2.3)
03900
04000 ; 16300 CC IF(PLT.NE.-2)RETURN
04100
04200 ; 16400 IF(PLT.GE.0)RETURN
04300 MOVE 02,PLT
04400 JUMPL 02,13M
04500 JRST 8M
04600 13M BLOCK 0
04700
04800 ; 16500 C THIS MAKES ALL CRESC. DBL THICKNESS AT PRINT TIME.
04900
05000 ; 16600 IF(J8)RETURN
05100 MOVE 02,J8
05200 JUMPGE 02,14M
05300 JRST 8M
00400 14M BLOCK 0
00500
00600 ; 16700 RX=RX+1./DIS
00700 MOVSI 02,201400
00800 FDVR 02,DIS
00900 FADRM 02,ALF+=8
01000
01100 ; 16800 J8=-1
01200 SETOM J8
01300
01400 ; 16900 C FOR DOUBLE THICKNESS
01500
01600 ; 17000 GO TO 301
01700 JRST 301P
01800
01900 ; 17100
02000
02100 ; 17200 302 R8=R8*RST7
02200 302P MOVE 02,ALF+3
02300 FMPRM 02,R8
02400
02500 ; 17300 R9=R9*RST7
02600 MOVE 02,ALF+3
02700 FMPRM 02,R9
02800
02900 ; 17400 IF(R9.EQ.0)R9=R8
03000 MOVE 02,R9
03100 JUMPN 02,15M
03200 MOVE 02,R8
03300 MOVEM 02,R9
03400 15M BLOCK 0
03500
03600 ; 17500 C R9=0 MAKES SQUARE
03700
03800 ; 17600 R3=R3Q-R8/2.
03900 MOVE 02,R8
04000 FSC 02,777777
04100 FSBR 02,ALF+5
04200 MOVNM 02,.COMM.+4
04300
04400 ; 17700 RX=RX-R9/2.
04500 MOVE 02,R9
04600 FSC 02,777777
04700 FSBRM 02,ALF+=8
04800 MOVNS 00,ALF+=8
04900
05000 ; 17710 RY=RX
05100 MOVE 02,ALF+=8
05200 MOVEM 02,RY
00400 ; 17720 IF(R11.NE.0)RY=RY+R11*RST7
00500 MOVE 02,R11
00600 JUMPE 02,16M
00700 MOVE 02,ALF+3
00800 FMPR 02,R11
00900 FADRM 02,RY
01000 16M BLOCK 0
01100
01200 ; 17730 C R11 IS OFFSET FOR PARALLELAGRAM
01300
01400 ; 17800 J10=J10
01500
01600 ; 17900 C DRAWS BOX, CENTER IS IN MIDDLE
01700
01800 ; 18000 C 4,POSI+=9,STF,NT#,50,0,0,,SIZ1↑BY NT#S↑,SIZ2
01900
02000 ; 18100 1302 CALL LINX(R3,ALF+=8,.COMM.+4+R8,RY)
02100 1302P MOVE 02,.COMM.+4
02200 FADR 02,R8
02300 MOVEM 02,%TEMP.
02400 JSA 16,ALF+=12INX
02500 ARG 02,.COMM.+4
02600 ARG 02,ALF+=8
02700 ARG 02,%TEMP.
02800 ARG 02,RY
02900
03000 ; 18200 CALL LINES(R3+R8,RY+R9,2)
03100 MOVE 02,.COMM.+4
03200 FADR 02,R8
03300 MOVEM 02,%TEMP.
03400 MOVE 03,RY
03500 FADR 03,R9
03600 MOVEM 03,%TEMP.+1
03700 JSA 16,ALF+=12INES
03800 ARG 02,%TEMP.
03900 ARG 02,%TEMP.+1
04000 ARG 00,CONST.+5
04100
04200 ; 18300 CALL LINES(R3,ALF+=8+R9,2)
04300 MOVE 02,ALF+=8
04400 FADR 02,R9
04500 MOVEM 02,%TEMP.
04600 JSA 16,ALF+=12INES
04700 ARG 02,.COMM.+4
04800 ARG 02,%TEMP.
04900 ARG 00,CONST.+5
05000
05100 ; 18400 CALL LINES(R3,ALF+=8,2)
05200 JSA 16,ALF+=12INES
05300 ARG 02,.COMM.+4
00400 ARG 02,ALF+=8
00500 ARG 00,CONST.+5
00600
00700 ; 18500 IF(J10.EQ.0)RETURN
00800 MOVE 02,J10
00900 JUMPN 02,17M
01000 JRST 8M
01100 17M BLOCK 0
01200
01300 ; 18600 J10=J10-1
01400 SOS J10
01500
01600 ; 18700 RJ=1./DIS
01700 MOVSI 02,201400
01800 FDVR 02,DIS
01900 MOVEM 02,ALF+=11
02000
02100 ; 18800 R3=R3-RJ
02200 MOVN 02,ALF+=11
02300 FADRM 02,.COMM.+4
02400
02500 ; 18900 R8=R8+RJ+RJ
02600 MOVE 02,ALF+=11
02700 FADR 02,ALF+=11
02800 FADRM 02,R8
02900
03000 ; 19000 RX=RX-RJ
03100 MOVN 02,ALF+=11
03200 FADRM 02,ALF+=8
03300
03400 ; 19010 RY=RY-RJ
03500 MOVN 02,ALF+=11
03600 FADRM 02,RY
03700
03800 ; 19100 R9=R9+RJ+RJ
03900 MOVE 02,ALF+=11
04000 FADR 02,ALF+=11
04100 FADRM 02,R9
04200
04300 ; 19200 GO TO 1302
04400 JRST 1302P
04500
04600 ; 19300 C TO THICKEN BOXES.
04700
04800 ; 19400
04900
05000 ; 19500 1401 R4=2.0
05100 1I401 MOVSI 02,202400
05200 MOVEM 02,.COMM.+5
00400 ; 19600 C FOR HEAVY BRACK.
00500
00600 ; 19700 RA=RSTJ2*RBX
00700 MOVE 02,RBX
00800 FMPR 02,STF+=8
00900 MOVEM 02,BM
01000
01100 ; 19800 RX=RX-RA
01200 MOVN 02,BM
01300 FADRM 02,ALF+=8
01400
01500 ; 19900 C THE BOTTOM
01600
01700 ; 20000 L=J4+J2-1
01800 MOVNI 02,1
01900 ADD 02,.COMM.+=25
02000 ADD 02,J2
02100 MOVEM 02,ALF+=12
02200
02300 ; 20100 R6=RTF
02400 MOVE 02,[3.0]
02500 MOVEM 02,R6
02600
02700 ; 20200 IF(L.LE.4)GO TO 4401
02800 MOVEI 02,4
02900 CAML 02,ALF+=12
03000 JRST 4I401
03100
03200 ; 20300 L=4
03300 MOVEI 02,4
03400 MOVEM 02,ALF+=12
03500
03600 ; 20400 R6=300.
03700 MOVSI 02,211454
03800 MOVEM 02,R6
03900
04000 ; 20500 4401 RA=STFF(L)
04100 4I401 MOVE 03,ALF+=12
04200 MOVE 02,STFF +3(3)
04300 MOVEM 02,BM
04400
04500 ; 20600 C SAVE FOR POS. OF BRACK. END ON UPPER STAFF.
04600
04700 ; 20700 RJY=RSTFAC(L)
04800 MOVE 03,ALF+=12
04900 MOVE 02,RSTFAC+3(3)
05000 MOVEM 02,ALF+=11Y
05100
05200 ; 20800 RY=RA+R6*RJY+RJY*56.+RJY*RBX
05300 MOVE 02,R6
00400 FMPR 02,ALF+=11Y
00500 FADR 02,BM
00600 MOVSI 03,206700
00700 FMPR 03,ALF+=11Y
00800 FADR 02,3
00900 MOVE 03,RBX
01000 FMPR 03,ALF+=11Y
01100 FADR 02,3
01200 MOVEM 02,RY
01300
01400 ; 20900 C THE TOP
01500
01600 ; 21000 R5=9.5
01700 MOVSI 02,204460
01800 MOVEM 02,.COMM.+6
01900
02000 ; 21100 GO TO 2401
02100 JRST 2I401
02200
02300 ; 21200
02400
02500 ; 21300 C DASHES
02600
02700 ; 21400 401 POS=POS-RST18
02800 I401: MOVN 02,ALF+4
02900 FADRM 02,POSI+=9
03000
03100 ; 21500 C********* 27/9/72 ******
03200
03300 ; 21600 IF(J7.LE.0)GO TO 407
03400 MOVE 02,.COMM.+=28
03500 JUMPLE 02,407P
03600
03700 ; 21700 IF(J7.EQ.4)GO TO 1401
03800 MOVEI 02,4
03900 CAMN 02,.COMM.+=28
04000 JRST 1I401
04100
04200 ; 21800 IF(J7.NE.3)GO TO 4001
04300 MOVEI 02,3
04400 CAME 02,.COMM.+=28
04500 JRST 4001P
04600
04700 ; 21900 C NEXT IS FOR VARIABLE LARGE BRACKET. P7=3 P10=THICK. P5=HGT P6=P3
04800
04900 ; 22000 2401 JA=3
05000 2I401 MOVEI 02,3
05100 MOVEM 02,.COMM.+1
05200
05300 ; 22100 IF(J10.EQ.0)J10=5
00400 MOVE 02,J10
00500 JUMPN 02,18M
00600 MOVEI 02,5
00700 MOVEM 02,J10
00800 18M BLOCK 0
00900
01000 ; 22200 C DEFAULT VALUE FOR THICKNESS =5
01100
01200 ; 22300 R4=R4-RBR
01300 MOVN 02,RBR
01400 FADRM 02,.COMM.+5
01500
01600 ; 22400 J9=0
01700 SETZM J9
01800
01900 ; 22500 J5=35
02000 MOVEI 02,43
02100 MOVEM 02,.COMM.+=26
02200
02300 ; 22600 C THE NUM FOR THE LITTLE END ITEMS
02400
02500 ; 22700 CC RY=R6-2.1*RSTJ2
02600
02700 ; 22800 R6=3
02800 MOVSI 02,202600
02900 MOVEM 02,R6
03000
03100 ; 22900 R7=0
03200 SETZM R7
03300
03400 ; 23000 C DOES LOWER ONE FIRST. ITEM IS IN 'CLEF3.DMD' ON DAT.LCS
03500
03600 ; 23100 IF(J8.NE.2)CALL CLEFS
03700 MOVEI 02,2
03800 CAMN 02,J8
03900 JRST 19M
04000 JSA 16,CLEFS
04100 19M BLOCK 0
04200
04300 ; 23200 C P8=1=BOTTOM 1/2 BRACK. ONLY: =2=TOP 1/2 ONLY: 0=COMPLETE
04400
04500 ; 23300 R4=R5-RBR
04600 MOVN 02,RBR
04700 FADR 02,.COMM.+6
04800 MOVEM 02,.COMM.+5
04900
05000 ; 23400 R6=3
05100 MOVSI 02,202600
05200 MOVEM 02,R6
00400 ; 23500 R7=-3
00500 MOVSI 02,575200
00600 MOVEM 02,R7
00700
00800 ; 23600 C TURNS IT UPSIDE DOWN.
00900
01000 ; 23700 CC JA=3
01100
01200 ; 23800 IF(J7.NE.4)GO TO 3401
01300 MOVEI 02,4
01400 CAME 02,.COMM.+=28
01500 JRST 3I401
01600
01700 ; 23900 POS=RA
01800 MOVE 02,BM
01900 MOVEM 02,POSI+=9
02000
02100 ; 24000 R4=R4*RJY/RSTJ2
02200 MOVE 02,.COMM.+5
02300 FMPR 02,ALF+=11Y
02400 FDVR 02,STF+=8
02500 MOVEM 02,.COMM.+5
02600
02700 ; 24100 C TO ADJUST HEIGHT OF BRACK END WHEN STAVES ARE DIFF. SIZES.
02800
02900 ; 24200 3401 IF(J8.NE.1)CALL CLEFS
03000 3I401 MOVEI 02,1
03100 CAMN 02,J8
03200 JRST 20M
03300 JSA 16,CLEFS
03400 20M BLOCK 0
03500
03600 ; 24300 R3Q=R3Q-12.0*RSTJ2
03700 MOVSI 02,204600
03800 FMPR 02,STF+=8
03900 FSBRM 02,ALF+5
04000 MOVNS 00,ALF+5
04100
04200 ; 24400 IF(J7.NE.4)GO TO 407
04300 MOVEI 02,4
04400 CAME 02,.COMM.+=28
04500 JRST 407P
04600
04700 ; 24500 J7=0
04800 SETZM J7
04900
05000 ; 24600 GO TO 140
05100 JRST 140P
05200
00500 ; 24800 4002 J5=4
00600 4002P MOVEI 02,4
00700 MOVEM 02,.COMM.+=26
00800
00900 ; 24900 C FOR CURVY BRACKET. P6 CAN CHANGE WIDTH.
01000
01100 ; 25000 R8=0
01200 SETZM R8
01300
01400 ; 25100 J4=J4+J2-1
01500 MOVNI 02,1
01600 ADD 02,.COMM.+=25
01700 ADD 02,J2
01800 MOVEM 02,.COMM.+=25
01900
02000 ; 25200 R7=(.3136*RSTFAC(J4)+.0056*(STFF(J4)-STFF(J2)))/RSTJ2
02100 MOVE 02,CONST.+7
02200 MOVE 03,.COMM.+=25
02300 FMPR 02,RSTFAC+3(3)
02400 MOVE 04,STFF +3(3)
02500 MOVE 03,J2
02600 FSBR 04,STFF +3(3)
02700 FMPR 04,CONST.+10
02800 FADR 02,4
02900 FDVR 02,STF+=8
03000 MOVEM 02,R7
03100
03200 ; 25300 C .0056=.0392/7.(THE MAGIC NUM FOR VERT SIZE OF BRACK.) .3136=8*.0392
03300
03400 ; 25400 C ADD DIST BETWEEN BOTTOM OF STAVES TO HEIGHT OF TOP STAFF
03500
03600 ; 25500 IF(R6.EQ.0)R6=1.+R7/20.
03700 MOVE 02,R6
03800 JUMPN 02,21M
03900 MOVE 02,R7
04000 FDVR 02,CONST.+11
04100 FADRI 02,201400
04200 MOVEM 02,R6
04300 21M BLOCK 0
04400
04500 ; 25600 JA=3
04600 MOVEI 02,3
04700 MOVEM 02,.COMM.+1
04800
04900 ; 25700 R4=2.3
05000 MOVE 02,CONST.+6
05100 MOVEM 02,.COMM.+5
05200
05300 ; 25800 C C BECAUSE BRACK DOESN'T REALLY GO UP FROM 0 ?!?X*↑
00500 ; 25900 CALL CLEFS
00600 JSA 16,CLEFS
00700
00800 ; 26000 RETURN
00900 JRST 8M
01000
01100 ; 26100
01200
01300 ; 26200 4001 IF(J7.EQ.5)GO TO 4002
01400 4001P MOVEI 02,5
01500 CAMN 02,.COMM.+=28
01600 JRST 4002P
01700
01800 ; 26300 IF(R8.EQ.0)R8=.8
01900 MOVE 02,R8
02000 JUMPN 02,22M
02100 MOVE 02,CONST.+12
02200 MOVEM 02,R8
02300 22M BLOCK 0
02400
02500 ; 26400 C P8 CAN SET SIZE OF DASH
02600
02700 ; 26402 RZ=5.96*RSTJ2
02800 MOVE 02,CONST.+13
02900 FMPR 02,STF+=8
03000 MOVEM 02,ALF+=18
03100
03200 ; 26405 RJ=R8*RZ
03300 MOVE 02,ALF+=18
03400 FMPR 02,R8
03500 MOVEM 02,ALF+=11
03600
03700 ; 26410 RZ=R9*RZ
03800 MOVE 02,R9
03900 FMPRM 02,ALF+=18
04000
04100 ; 26420 IF(R9.EQ.0)RZ=RJ
04200 MOVE 02,R9
04300 JUMPN 02,23M
04400 MOVE 02,ALF+=11
04500 MOVEM 02,ALF+=18
04600 23M BLOCK 0
04700
04800 ; 26430 C P9 SETS SPACE BETWEEN DASHES. (CAN BE DIFFERENT FROM P8)
04900
05000 ; 26440 R8=RJ
05100 MOVE 02,ALF+=11
05200 MOVEM 02,R8
00400 ; 26450 R9=RZ
00500 MOVE 02,ALF+=18
00600 MOVEM 02,R9
00700
00800 ; 26500 RD=RD+POS
00900 MOVE 02,POSI+=9
01000 FADRM 02,ALF+7
01100
01200 ; 26600 RJX=RD
01300 MOVE 02,ALF+7
01400 MOVEM 02,ALF+=11X
01500
01600 ; 26700 C =1 =DASHES, P6=P3=VERTICAL; P4=P5=HORIZ.; OTHERWISE SLOPE.
01700
01800 ; 26800 J6=ROFF(RHORZ(R6))
01900 JSA 16,RHORZ
02000 ARG 02,R6
02100 MOVEM 00,%TEMP.
02200 JSA 16,ROFF
02300 ARG 02,%TEMP.
02400 MOVEM 00,%TEMP.+1
02500 JSA 16,IFIX
02600 ARG 00,%TEMP.+1
02700 MOVEM 00,J6
02800
02900 ; 26900 J3=J6-J3
03000 MOVN 02,J6
03100 ADDM 02,J3
03200 MOVNS 00,J3
03300
03400 ; 27000 J4=J5-J4
03500 MOVN 02,.COMM.+=26
03600 ADDM 02,.COMM.+=25
03700 MOVNS 00,.COMM.+=25
03800
03900 ; 27100 RJY=RD
04000 MOVE 02,ALF+7
04100 MOVEM 02,ALF+=11Y
04200
04300 ; 27200 C SAVE FOR THICK LINES
04400
04500 ; 27300 RA=J6
04600 JSA 16,FLOAT
04700 ARG 00,J6
04800 MOVEM 00,BM
04900
05000 ; 27400 C RA IS HORIZ. GOAL FOR DASHES
05100
05200 ; 27500 402 RY=POS+R5*RST7
05300 402P MOVE 02,ALF+3
00400 FMPR 02,.COMM.+6
00500 FADR 02,POSI+=9
00600 MOVEM 02,RY
00700
00800 ; 27600 IF(J4.EQ.0)GO TO 41
00900 MOVE 02,.COMM.+=25
01000 JUMPE 02,41P
01100
01200 ; 27700 RH=RY-RD
01300 MOVN 02,ALF+7
01400 FADR 02,RY
01500 MOVEM 02,RH
01600
01700 ; 27800 C TOTAL HEIGHT DIFF.
01800
01900 ; 27900 RX=RA-R3
02000 MOVN 02,.COMM.+4
02100 FADR 02,BM
02200 MOVEM 02,ALF+=8
02300
02400 ; 28000 C TOTAL LENGTH DIFF.
02500
02600 ; 28100 RH=RH/RX
02700 MOVE 02,RH
02800 FDVR 02,ALF+=8
02900 MOVEM 02,RH
03000
03100 ; 28200 41 L=3
03200 41P MOVEI 02,3
03300 MOVEM 02,ALF+=12
03400
03500 ; 28300 K=2
03600 MOVEI 02,2
03700 MOVEM 02,K
03800
03900 ; 28400 416 CALL LINES(R3Q,ALF+7,ALF+=12)
04000 416P JSA 16,ALF+=12INES
04100 ARG 02,ALF+5
04200 ARG 02,ALF+7
04300 ARG 00,ALF+=12
04400
04500 ; 28405 IF(J3.EQ.0)GO TO 412
04600 MOVE 02,J3
04700 JUMPE 02,412P
04800
04900 ; 28407 C JUMP FOR VERT. DASH
05000
05100 ; 28410 IF(J3.GT.0)GO TO 422
05200 MOVE 02,J3
05300 JUMPG 02,422P
00500 ; 28420 IF(R3Q.LE.RA)GO TO 413
00600 MOVE 02,ALF+5
00700 CAMG 02,BM
00800 JRST 413P
00900
01000 ; 28425 C THIS IF P6 IS LESS THAN P3
01100
01200 ; 28430 R3Q=R3Q-RJ
01300 MOVN 02,ALF+=11
01400 FADRM 02,ALF+5
01500
01600 ; 28440 GO TO 423
01700 JRST 423P
01800
01900 ; 28500 422 IF(R3Q.GE.RA)GO TO 413
02000 422P MOVE 02,ALF+5
02100 CAML 02,BM
02200 JRST 413P
02300
02400 ; 28600 C JUMP IF ALL DONE
02500
02600 ; 28700 R3Q=R3Q+RJ
02700 MOVE 02,ALF+=11
02800 FADRM 02,ALF+5
02900
03000 ; 28710 423 IF(J4.NE.0)RD=RJY+RH*(R3Q-R3)
03100 423P MOVE 02,.COMM.+=25
03200 JUMPE 02,24M
03300 MOVE 02,ALF+5
03400 FSBR 02,.COMM.+4
03500 FMPR 02,RH
03600 FADR 02,ALF+=11Y
03700 MOVEM 02,ALF+7
03800 24M BLOCK 0
03900
04000 ; 28720 C FINDS HEIGHT OF RIGHT SIDE OF SLOPE
04100
04200 ; 28800 414 CALL EXCH(L,K)
04300 414P JSA 16,EXCH
04400 ARG 00,ALF+=12
04500 ARG 00,K
04600
04700 ; 28810 CALL EXCH(RJ,ALF+=18)
04800 JSA 16,EXCH
04900 ARG 02,ALF+=11
05000 ARG 02,ALF+=18
05100
05200 ; 28820 C EXCH. SPACE AND DASH SIZE.
00400 ; 28900 GO TO 416
00500 JRST 416P
00600
00700 ; 28950 412 IF(J4.GT.0)GO TO 424
00800 412P MOVE 02,.COMM.+=25
00900 JUMPG 02,424P
01000
01100 ; 28960 IF(RD.LE.RY)GO TO 413
01200 MOVE 02,ALF+7
01300 CAMG 02,RY
01400 JRST 413P
01500
01600 ; 28970 RD=RD-RJ
01700 MOVN 02,ALF+=11
01800 FADRM 02,ALF+7
01900
02000 ; 28980 C THIS IF P5 IS LESS THAN P4.
02100
02200 ; 28990 GO TO 414
02300 JRST 414P
02400
02500 ; 29000 424 IF(RD.GE.RY)GO TO 413
02600 424P MOVE 02,ALF+7
02700 CAML 02,RY
02800 JRST 413P
02900
03000 ; 29100 C JUMP IF DONE
03100
03200 ; 29200 RD=RD+RJ
03300 MOVE 02,ALF+=11
03400 FADRM 02,ALF+7
03500
03600 ; 29300 GO TO 414
03700 JRST 414P
03800
03900 ; 29400 413 IF(J10.GT.0)GO TO 420
04000 413P MOVE 02,J10
04100 JUMPG 02,420P
04200
04300 ; 29410 IF(J11.EQ.0)RETURN
04400 MOVE 02,J11
04500 JUMPN 02,25M
04600 JRST 8M
04700 25M BLOCK 0
04800
04900 ; 29415 IF(J3)RJ=-RJ
05000 MOVE 02,J3
05100 JUMPGE 02,26M
05200 MOVNS 00,ALF+=11
05300 26M BLOCK 0
00500 ; 29420 IF(L.EQ.3)R3Q=R3Q-RJ
00600 MOVEI 02,3
00700 CAME 02,ALF+=12
00800 JRST 27M
00900 MOVN 02,ALF+=11
01000 FADRM 02,ALF+5
01100 27M BLOCK 0
01200
01300 ; 29430 RX=R8
01400 MOVE 02,R8
01500 MOVEM 02,ALF+=8
01600
01700 ; 29440 IF(J11)RX=-RX
01800 MOVE 02,J11
01900 JUMPGE 02,28M
02000 MOVNS 00,ALF+=8
02100 28M BLOCK 0
02200
02300 ; 29450 CALL LINX(R3Q,ALF+7,ALF+5,ALF+7+RX)
02400 MOVE 02,ALF+7
02500 FADR 02,ALF+=8
02600 MOVEM 02,%TEMP.
02700 JSA 16,ALF+=12INX
02800 ARG 02,ALF+5
02900 ARG 02,ALF+7
03000 ARG 02,ALF+5
03100 ARG 02,%TEMP.
03200
03300 ; 29460 C PUTS BRACK END ON DASHED LINE. (P11=1 OR -1)
03400
03500 ; 29470 RETURN
03600 JRST 8M
03700
03800 ; 29480
03900
04000 ; 29500 C NEXT FOR THICK DASHES
04100
04200 ; 29600 420 J10=J10-1
04300 420P SOS J10
04400
04500 ; 29650 RJ=1./DIS
04600 MOVSI 02,201400
04700 FDVR 02,DIS
04800 MOVEM 02,ALF+=11
04900
05000 ; 29700 IF(J3.EQ.0)GO TO 415
05100 MOVE 02,J3
05200 JUMPE 02,415P
00400 ; 29800 R3Q=R3
00500 MOVE 02,.COMM.+4
00600 MOVEM 02,ALF+5
00700
00800 ; 29900 RJY=RJY+RJ
00900 MOVE 02,ALF+=11
01000 FADRM 02,ALF+=11Y
01100
01200 ; 29950 RD=RJY
01300 MOVE 02,ALF+=11Y
01400 MOVEM 02,ALF+7
01500
01600 ; 30000 GO TO 417
01700 JRST 417P
01800
01900 ; 30100 415 R3Q=R3Q+RJ
02000 415P MOVE 02,ALF+=11
02100 FADRM 02,ALF+5
02200
02300 ; 30200 RD=RJX
02400 MOVE 02,ALF+=11X
02500 MOVEM 02,ALF+7
02600
02700 ; 30210 417 RJ=R8
02800 417P MOVE 02,R8
02900 MOVEM 02,ALF+=11
03000
03100 ; 30220 RZ=R9
03200 MOVE 02,R9
03300 MOVEM 02,ALF+=18
03400
03500 ; 30230 C FOR THICK DASHES.
03600
03700 ; 30300 GO TO 41
03800 JRST 41P
03900
04000 ; 30400
04100
04200 ; 30500
04300
04400 ; 30600 407 RX=RD+POS
04500 407P MOVE 02,ALF+7
04600 FADR 02,POSI+=9
04700 MOVEM 02,ALF+=8
04800
04900 ; 30700 RY=R5*RST7+POS
05000 MOVE 02,ALF+3
05100 FMPR 02,.COMM.+6
05200 FADR 02,POSI+=9
05300 MOVEM 02,RY
00500 ; 30800 IF(J7.EQ.3)GO TO 140
00600 MOVEI 02,3
00700 CAMN 02,.COMM.+=28
00800 JRST 140P
00900
01000 ; 30900 CALL NOZERO(R9)
01100 JSA 16,NOZERO
01200 ARG 02,R9
01300
01400 ; 31000 IF(J7.EQ.-1)GO TO 408
01500 MOVNI 02,1
01600 CAMN 02,.COMM.+=28
01700 JRST 408P
01800
01900 ; 31100 C FOR 'TR' J7=-2, 'ARPEGG' J7=-1, STRAIGHT LINES J7=0
02000
02100 ; 31200 CC WHY THE IFIX???? RJX=IFIX(RHORZ(R6))
02200
02300 ; 31300 RJX=IFIX(ROFF(RHORZ(R6)))
02400 JSA 16,RHORZ
02500 ARG 02,R6
02600 MOVEM 00,%TEMP.
02700 JSA 16,ROFF
02800 ARG 02,%TEMP.
02900 MOVEM 00,%TEMP.+1
03000 JSA 16,IFIX
03100 ARG 02,%TEMP.+1
03200 MOVEM 00,%TEMP.+2
03300 JSA 16,FLOAT
03400 ARG 00,%TEMP.+2
03500 MOVEM 00,ALF+=11X
03600
03700 ; 31400 C ALL THIS CRAP SO IT WILL MATCH UP WITH P3 WHEN NECESSARY.
03800
03900 ; 31500 IF(J7.EQ.0)GO TO 42
04000 MOVE 02,.COMM.+=28
04100 JUMPE 02,42P
04200
04300 ; 31600 RY=R9*RST7+RX
04400 MOVE 02,ALF+3
04500 FMPR 02,R9
04600 FADR 02,ALF+=8
04700 MOVEM 02,RY
04800
04900 ; 31700 CALL NOZERO(R8)
05000 JSA 16,NOZERO
05100 ARG 02,R8
05200
05300 ; 31800 4041 RZ=RX
00400 4041P MOVE 02,ALF+=8
00500 MOVEM 02,ALF+=18
00600
00700 ; 31900 RH=RY
00800 MOVE 02,RY
00900 MOVEM 02,RH
01000
01100 ; 32000 C SAVE FOR THICK WIGGLES
01200
01300 ; 32100 CALL LINES(R3Q,ALF+=8,3)
01400 JSA 16,ALF+=12INES
01500 ARG 02,ALF+5
01600 ARG 02,ALF+=8
01700 ARG 00,CONST.+3
01800
01900 ; 32200 C DRAWS STRAIGHT LINES. ETC.
02000
02100 ; 32300 R9=R3Q
02200 MOVE 02,ALF+5
02300 MOVEM 02,R9
02400
02500 ; 32400 RJ=RY
02600 MOVE 02,RY
02700 MOVEM 02,ALF+=11
02800
02900 ; 32500 RW=3.*RSTJ2*R8
03000 MOVSI 02,202600
03100 FMPR 02,STF+=8
03200 FMPR 02,R8
03300 MOVEM 02,RW
03400
03500 ; 32600 RA=RW*2.5
03600 MOVSI 02,202500
03700 FMPR 02,RW
03800 MOVEM 02,BM
03900
04000 ; 32700 C P8=HORZ. WIGGLE SIZE; P9=VERT. SIZE
04100
04200 ; 32800 404 R9=R9+RA
04300 404P MOVE 02,BM
04400 FADRM 02,R9
04500
04600 ; 32900 CALL LINES(R9,ALF+=11,2)
04700 JSA 16,ALF+=12INES
04800 ARG 02,R9
04900 ARG 02,ALF+=11
05000 ARG 00,CONST.+5
05100
05200 ; 33000 R9=R9+RW
05300 MOVE 02,RW
00400 FADRM 02,R9
00500
00600 ; 33100 CALL LINES(R9,ALF+=11,2)
00700 JSA 16,ALF+=12INES
00800 ARG 02,R9
00900 ARG 02,ALF+=11
01000 ARG 00,CONST.+5
01100
01200 ; 33200 405 CALL EXCH(RX,ALF+=11)
01300 405P JSA 16,EXCH
01400 ARG 02,ALF+=8
01500 ARG 02,ALF+=11
01600
01700 ; 33300 IF(R9.LT.RJX)GO TO 404
01800 MOVE 02,ALF+=11X
01900 CAMLE 02,R9
02000 JRST 404P
02100
02200 ; 33400 IF(J10.LE.0)RETURN
02300 MOVE 02,J10
02400 JUMPG 02,29M
02500 JRST 8M
02600 29M BLOCK 0
02700
02800 ; 33450 RY=1./DIS
02900 MOVSI 02,201400
03000 FDVR 02,DIS
03100 MOVEM 02,RY
03200
03300 ; 33500 RX=RZ+RY
03400 MOVE 02,ALF+=18
03500 FADR 02,RY
03600 MOVEM 02,ALF+=8
03700
03800 ; 33600 RY=RH+RY
03900 MOVE 02,RH
04000 FADRM 02,RY
04100
04200 ; 33700 J10=J10-1
04300 SOS J10
04400
04500 ; 33800 GO TO 4041
04600 JRST 4041P
04700
04800 ; 33900 C P10= + NUM OF THICKNESSES TO WIGGLE
04900
05000 ; 34000
05100
05200 ; 34100 408 IF(RX.GT.RY)CALL EXCH(RX,RY)
05300 408P MOVE 02,ALF+=8
00400 CAMG 02,RY
00500 JRST 30M
00600 JSA 16,EXCH
00700 ARG 02,ALF+=8
00800 ARG 02,RY
00900 30M BLOCK 0
01000
01100 ; 34200 RZ=R9*RSTJ2*5.96
01200 MOVE 02,STF+=8
01300 FMPR 02,R9
01400 FMPR 02,CONST.+13
01500 MOVEM 02,ALF+=18
01600
01700 ; 34300 C USE P9 TO SET WIGGLE WIDTH. P8 TO SET HGT.
01800
01900 ; 34400 CALL NOZERO(R8)
02000 JSA 16,NOZERO
02100 ARG 02,R8
02200
02300 ; 34500 RD=R8*RST7*.5
02400 MOVE 02,ALF+3
02500 FMPR 02,R8
02600 FSC 02,777777
02700 MOVEM 02,ALF+7
02800
02900 ; 34600 RJ=RD
03000 MOVE 02,ALF+7
03100 MOVEM 02,ALF+=11
03200
03300 ; 34700 IF(RD.LT.1.)RD=1.
03400 MOVSI 02,201400
03500 CAMG 02,ALF+7
03600 JRST 31M
03700 MOVSI 02,201400
03800 MOVEM 02,ALF+7
03900 31M BLOCK 0
04000
04100 ; 34800 421 R9=RX
04200 421P MOVE 02,ALF+=8
04300 MOVEM 02,R9
04400
04500 ; 34900 RW=R3Q
04600 MOVE 02,ALF+5
04700 MOVEM 02,RW
04800
04900 ; 35000 RA=RZ+R3Q
05000 MOVE 02,ALF+5
05100 FADR 02,ALF+=18
05200 MOVEM 02,BM
00400 ; 35100 CALL LINES(RW,R9,3)
00500 JSA 16,ALF+=12INES
00600 ARG 02,RW
00700 ARG 02,R9
00800 ARG 00,CONST.+3
00900
01000 ; 35200 410 R9=R9+RJ
01100 410P MOVE 02,ALF+=11
01200 FADRM 02,R9
01300
01400 ; 35300 CALL LINES(RA,R9,2)
01500 JSA 16,ALF+=12INES
01600 ARG 02,BM
01700 ARG 02,R9
01800 ARG 00,CONST.+5
01900
02000 ; 35400 R9=R9+RD
02100 MOVE 02,ALF+7
02200 FADRM 02,R9
02300
02400 ; 35500 CALL LINES(RA,R9,2)
02500 JSA 16,ALF+=12INES
02600 ARG 02,BM
02700 ARG 02,R9
02800 ARG 00,CONST.+5
02900
03000 ; 35600 CALL EXCH(RA,RW)
03100 JSA 16,EXCH
03200 ARG 02,BM
03300 ARG 02,RW
03400
03500 ; 35700 IF(R9.LT.RY)GO TO 410
03600 MOVE 02,RY
03700 CAMLE 02,R9
03800 JRST 410P
03900
04000 ; 35800 IF(J10.LE.0)RETURN
04100 MOVE 02,J10
04200 JUMPG 02,32M
04300 JRST 8M
04400 32M BLOCK 0
04500
04600 ; 35900 R3Q=R3Q+1./DIS
04700 MOVSI 02,201400
04800 FDVR 02,DIS
04900 FADRM 02,ALF+5
05000
05100 ; 36000 J10=J10-1
05200 SOS J10
00400 ; 36100 GO TO 421
00500 JRST 421P
00600
00700 ; 36200 C VERTICAL WIGGLE P10=+ NUM OF THICKNESSES.
00800
00900 ; 36300 END
01000
01100 JRST 8M
01200 ITMSU% ARG 00,0
01300 MOVEM 15,TEMP. +1
01400 MOVEM 16,TEMP. +2
01500 JRST 1M
01600 8M MOVE 15,TEMP. +1
01700 MOVE 16,TEMP. +2
01800 JRA 16,0(16)
01900